﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

namespace TangoFamilyAndGuide.Site
{
    public partial class ExploradorAirTicket : System.Web.UI.Page
    {
        List<Entidades.AirTicket> airTicket = new List<Entidades.AirTicket>();
        protected void Page_Load(object sender, EventArgs e)
        {
            Entidades.Sesion sesion;
            if (!IsPostBack)
            {
                if (Funciones.SessionTimeOut(Session))
                {
                    Response.Redirect("~/SessionTimeout.aspx");
                }
                else
                {
                    sesion = (Entidades.Sesion)Session["Sesion"];
                    EstadoRadioButton.Checked = true;
                    TipoBusquedaRadioButton_CheckedChanged(NombreRadioButton, new EventArgs());
                    NombreTextBox.Focus();
                    EstadoDropDownList.DataSource = RN.Estado.ListaParaAirTicket(true, sesion);
                    DataBind();
                    EstadoDropDownList.SelectedValue = String.Empty;
                    EstadoDropDownList.Focus();
                }
            }
            sesion = (Entidades.Sesion)Session["Sesion"];
            List<Entidades.Permiso> permisoAdminSITEActive = sesion.Usuario.Permisos.FindAll(delegate(Entidades.Permiso p)
            {
                return p.TipoPermiso.Id == "AdminSITE";
            });
            if (permisoAdminSITEActive.Count == 0)
            {
                Response.Redirect("~/Home.aspx");
            }
        }
        protected void AirTicketPagingGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                AirTicketPagingGridView.PageIndex = e.NewPageIndex;
                List<Entidades.AirTicket> lista;
                int CantidadFilas = 0;
                lista = RN.AirTicket.Lista(out CantidadFilas, AirTicketPagingGridView.PageIndex, AirTicketPagingGridView.PageSize, AirTicketPagingGridView.OrderBy, NombreTextBox.Text, PaisTextBox.Text, "", "", EstadoDropDownList.SelectedValue, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                AirTicketPagingGridView.VirtualItemCount = CantidadFilas;
                ViewState["lista"] = lista;
                AirTicketPagingGridView.DataSource = lista;
                AirTicketPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void AirTicketPagingGridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                List<Entidades.AirTicket> lista = new List<Entidades.AirTicket>();
                int CantidadFilas = 0;
                lista = RN.AirTicket.Lista(out CantidadFilas, AirTicketPagingGridView.PageIndex, AirTicketPagingGridView.PageSize, AirTicketPagingGridView.OrderBy, NombreTextBox.Text, PaisTextBox.Text, "", "", EstadoDropDownList.SelectedValue, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                ViewState["lista"] = lista;
                AirTicketPagingGridView.DataSource = (List<Entidades.AirTicket>)ViewState["lista"];
                AirTicketPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void AirTicketPagingGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';";
                e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
                
                //Color por estado distinto a Active
                if (e.Row.Cells[9].Text != "Active")
                {
                    e.Row.ForeColor = Color.Red;
                }
                //DropDownList ddlTipoDestacado = (DropDownList)e.Row.FindControl("ddlTipoDestacado");
                //if (ddlTipoDestacado != null)
                //{
                //    ddlTipoDestacado.DataSource = Entidades.TiposDestacado.TipoDestacado.ListaMasSinInformar();
                //    ddlTipoDestacado.DataBind();
                //    ddlTipoDestacado.SelectedValue = AirTicketPagingGridView.DataKeys[e.Row.RowIndex].Values[0].ToString();
                //}
            }
        }
        private void DesSeleccionarFilas()
        {
            AirTicketPagingGridView.SelectedIndex = -1;
        }

        protected void AirTicketPagingGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int item = Convert.ToInt32(e.CommandArgument);
            List<Entidades.AirTicket> lista = (List<Entidades.AirTicket>)ViewState["lista"];
            Entidades.AirTicket airTicket = lista[item];
            switch (e.CommandName)
            {
                case "Detalle":
                    NombreLabel.Text = airTicket.Nombre;
                    EmailLabel.Text = airTicket.Email;
                    OrigenLabel.Text = airTicket.PaisOrigen + " " + airTicket.LocalidadOrigen;
                    DestinoLabel.Text = airTicket.PaisDestino + " " + airTicket.LocalidadDestino;
                    FechaLabel.Text = airTicket.FechaDesde.ToString("dd/MM/yyyy") + " al " + airTicket.FechaHasta.ToString("dd/MM/yyyy");
                    if (airTicket.IdaYVuelta)
                    {
                        IdaYVueltaLabel.Text = "SI";
                    }
                    else
                    {
                        IdaYVueltaLabel.Text = "NO";
                    }
                    ClaseLabel.Text = airTicket.Clase;
                    CantidadPersonasLabel.Text = "Adultos: " + airTicket.CantidadPersonasAdult;
                    if (airTicket.CantidadPersonasChild != 0)
                    {
                        CantidadPersonasLabel.Text += " Niños (0-11): " + airTicket.CantidadPersonasChild;
                    }
                    ComentariosLabel.Text = airTicket.Descripcion;
                    ModalPopupExtender1.Show();
                    //Session["AirTicket"] = airTicket;
                    //Response.Redirect("~/AirTicketGuideConsultaDetallada.aspx");
                    break;
                case "CambiarEstado":
                    //Session["AirTicket"] = airTicket;
                    //Entidades.Evento Evento;
                    //RN.AirTicket.EventoPosible(out Evento, airTicket, (Entidades.Sesion)Session["Sesion"]);
                    //TituloConfirmacionLabel.Text = "Confirmar " + Evento.DescrEvento;
                    //NombreLabel.Text = airTicket.Nombre;
                    //DescripcionLabel.Text = airTicket.Descripcion;
                    //PaisLabel.Text = airTicket.Pais;
                    //ProvinciaLabel.Text = airTicket.Provincia;
                    //LocalidadLabel.Text = airTicket.Localidad;
                    //EstadoLabel.Text = airTicket.WF.Estado;
                    //UsuarioLabel.Text = airTicket.Usuario.Id;
                    //ViewState["AirTicket"] = airTicket;
                    //ModalPopupExtender1.Show();
                    break;
            }
        }
        protected void AirTicketPagingGridView_RowEditing(object sender, GridViewEditEventArgs e)
        {
            AirTicketPagingGridView.EditIndex = e.NewEditIndex;
            AirTicketPagingGridView.DataSource = ViewState["lista"];
            AirTicketPagingGridView.DataBind();
        }
        protected void AirTicketPagingGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            AirTicketPagingGridView.EditIndex = -1;
            AirTicketPagingGridView.DataSource = ViewState["lista"];
            AirTicketPagingGridView.DataBind();
        }
        protected void AirTicketPagingGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                //List<Entidades.AirTicket> airTicketes = ((List<Entidades.AirTicket>)ViewState["lista"]);
                //Entidades.AirTicket airTicketActual = RN.AirTicket.ObtenerCopia(airTicketes[e.RowIndex]);
                //Entidades.AirTicket airTicket = airTicketes[e.RowIndex];

                //string ranking = ((TextBox)AirTicketPagingGridView.Rows[e.RowIndex].FindControl("txtRanking")).Text;
                //string tipoDestacado = ((DropDownList)AirTicketPagingGridView.Rows[e.RowIndex].FindControl("ddlTipoDestacado")).SelectedValue;
                //if (ranking != string.Empty)
                //{
                //     airTicket.Ranking = Convert.ToInt32(ranking);
                //}
                //else
                //{
                //    throw new Exception("Debe informar el ranking. No puede estar vacío.");
                //}
                //airTicket.TipoDestacado = tipoDestacado;
                //RN.AirTicket.Modificar(airTicketActual, airTicket, (Entidades.Sesion)Session["Sesion"]);
                //AirTicketPagingGridView.EditIndex = -1;
                //AirTicketPagingGridView.DataSource = ViewState["lista"];
                //AirTicketPagingGridView.DataBind();
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('" + ex.Message.ToString().Replace("'", "") + "');</SCRIPT>", false);
            }
        }
        protected void AirTicketPagingGridView_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        protected void AirTicketPagingGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
        }

        protected void CambiarEstadoButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    //Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    //Entidades.AirTicket airTicket = (Entidades.AirTicket)ViewState["AirTicket"];
                    //Entidades.Evento Evento;
                    //RN.AirTicket.EventoPosible(out Evento, airTicket, sesion);
                    //RN.AirTicket.CambiarEstado(airTicket, Evento.Id, Evento.EstadoHst, sesion);
                    //BuscarButton_Click(BuscarButton, new EventArgs());
                    //Funciones.PersonalizarControlesMaster(Master, true, sesion);
                }
                catch (Exception ex)
                {
                    MensajeLabel.Text = "Problemas al cambiar el estado del AirTicket." + ex.Message;
                }
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                MensajeLabel.Text = String.Empty;
                List<Entidades.AirTicket> lista = new List<Entidades.AirTicket>();
                int CantidadFilas = 0;
                if (IdAirTicketRadioButton.Checked)
                {
                    if (IdAirTicketTextBox.Text == string.Empty)
                    {
                        MensajeLabel.Text = "No se han encontrado AirTickets que satisfagan la busqueda";
                    }
                    else
                    {
                        lista = RN.AirTicket.ListaPorIdAirTicket(Convert.ToInt32(IdAirTicketTextBox.Text), false, (Entidades.Sesion)Session["Sesion"]);
                        CantidadFilas = lista.Count;
                    }
                }
                else
                {
                    lista = RN.AirTicket.Lista(out CantidadFilas, AirTicketPagingGridView.PageIndex, AirTicketPagingGridView.PageSize, AirTicketPagingGridView.OrderBy, NombreTextBox.Text, PaisTextBox.Text, "", "", EstadoDropDownList.SelectedValue, Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                }
                if (MensajeLabel.Text == "")
                {
                    AirTicketPagingGridView.VirtualItemCount = CantidadFilas;
                    ViewState["lista"] = lista;
                    //Grilla
                    AirTicketPagingGridView.DataSource = lista;
                    AirTicketPagingGridView.DataBind();
                    if (lista.Count == 0)
                    {
                        AirTicketPagingGridView.DataSource = null;
                        AirTicketPagingGridView.DataBind();
                        MensajeLabel.Text = "No se han encontrado AirTicketes que satisfagan la busqueda";
                    }
                }
            }
        }
        protected void TipoBusquedaRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            AirTicketPagingGridView.DataSource = null;
            AirTicketPagingGridView.DataBind();
            MensajeLabel.Text = String.Empty;
            if (IdAirTicketRadioButton.Checked)
            {
                IdAirTicketTextBox.Visible = true;
                NombreTextBox.Visible = false;
                NombreTextBox.Text = String.Empty;
                PaisTextBox.Visible = false;
                PaisTextBox.Text = String.Empty;
                EstadoDropDownList.Visible = false;
            }
            else if (NombreRadioButton.Checked)
            {
                IdAirTicketTextBox.Visible = false;
                IdAirTicketTextBox.Text = String.Empty;
                NombreTextBox.Visible = true;
                PaisTextBox.Visible = false;
                PaisTextBox.Text = String.Empty;
                EstadoDropDownList.Visible = false;
            }
            else if (PaisRadioButton.Checked)
            {
                IdAirTicketTextBox.Visible = false;
                IdAirTicketTextBox.Text = String.Empty;
                NombreTextBox.Visible = false;
                NombreTextBox.Text = String.Empty;
                PaisTextBox.Visible = true;
                EstadoDropDownList.Visible = false;
            }
            else
            {
                IdAirTicketTextBox.Visible = false;
                IdAirTicketTextBox.Text = String.Empty;
                NombreTextBox.Visible = false;
                NombreTextBox.Text = String.Empty;
                PaisTextBox.Visible = false;
                PaisTextBox.Text = String.Empty;
                EstadoDropDownList.Visible = true;
            }
        }
    }
}